#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//int main()
//{
//    bool makesquare(int* matchsticks, int matchsticksSize) {
//        int sum = 0;
//        int max = matchsticks[0];
//        int min = matchsticks[0];
//        for (int i = 0; i < matchsticksSize; ++i)
//        {
//            sum += matchsticks[i];
//            if (max < matchsticks[i])
//            {
//                max = matchsticks[i];
//            }
//            if (min > matchsticks[i])
//            {
//                min = matchsticks[i];
//            }
//        }
//        return sum % 4 == 0 && sum / 4 >= max && max % min == 0;
//    }
//}

int main()
{
    int nums[] = { 1,1,1,2,2,3 };
    int k = 2;
    int numsSize = sizeof(nums) / sizeof(nums[0]);
    int max = nums[0];
    for (int i = 1; i < numsSize; ++i)
    {
        if (nums[i] > max)
        {
            max = nums[i];
        }
    }
    int arr[100000] = { 0 };
    for (int i = 0; i < numsSize; ++i)
    {
        ++arr[nums[i]];
    }
    int tmp = arr[1];
    int index = 1;
    int ti = 0;
    for (int i = 2; i <= max; ++i)
    {
        if (tmp < arr[i])
        {
            index = i;
            tmp = arr[i];
        }
        if (i == max)
        {
            nums[ti++] = index;
            tmp = arr[index++];
            i = 1;
            arr[index - 1] = 0;
            --k;
            if (!k)
            {
                break;
            }
        }
    }
}